package com.app.mbeans.movimientos.polizas;

import java.io.Serializable;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

import org.primefaces.context.RequestContext;

import com.core.app.mbeans.MBeanAbstracto;

@ManagedBean(name="polizaPrestamoBean")
@ViewScoped
public class PolizaPrestamoBean extends MBeanAbstracto implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	private String labelIniciar;
	
	private List listaPrestamos;
	private List listaAmortizaciones;
	private List listaSocios;
	private List listaAvales;
	private Map datosPrestamo;
	private Map prestamoSeleccionado;
	private Double[] totalesAmortizacion;
	private Integer indicePrestamoSeleccionado;
	private Integer pestaniaSeleccionada;
	
	private String etiquetaPolizasMostradas;
	private String etiquetaTotalPolizas;
	private String etiquetaGuardar;
	private String etiquetaCancelar;
	
	private Boolean mostrarOpcionesImpresion;
	private Boolean deshabilitarGuardar;
	private Boolean soloLecturaDetalleDatosPrestamo;
	
	private Boolean deshabilitarPrimerRegistro;
	private Boolean deshabilitarAnteriorRegistro;
	private Boolean deshabilitarSiguienteRegistro;
	private Boolean deshabilitarUltimoRegistro;
	
	
	@PostConstruct
	public void inicializar() throws ParseException{
		llenarDatosPrestamo();
		generarListaSocios();
		etiquetaPolizasMostradas = "Polizas en esta pagina:".concat(String.valueOf(listaPrestamos.size()));
		etiquetaTotalPolizas = "Total Polizas:".concat(String.valueOf(listaPrestamos.size()));
	}
	
	public void actualizarPaginaResumenPrestamos(ActionEvent evento){
		pestaniaSeleccionada = 1;
	}
	
	public Map clonarPrestamo(Map mapaPrestamo) throws ParseException{
		Map nuevoMapaPrestamo = new HashMap<String, Object>();
		nuevoMapaPrestamo.put("idPoliza", mapaPrestamo.get("idPoliza"));
		nuevoMapaPrestamo.put("fechaInicial", mapaPrestamo.get("fechaInicial") );
		nuevoMapaPrestamo.put("fechaVencimiento", mapaPrestamo.get("fechaVencimiento") );
		nuevoMapaPrestamo.put("idSocio",mapaPrestamo.get("idSocio"));
		nuevoMapaPrestamo.put("idAval",mapaPrestamo.get("idAval"));
		nuevoMapaPrestamo.put("importe",mapaPrestamo.get("importe"));
		nuevoMapaPrestamo.put("cheque",mapaPrestamo.get("cheque"));
		nuevoMapaPrestamo.put("listaAmortizaciones", generarAmortizaciones(mapaPrestamo));
		nuevoMapaPrestamo.put("tasaInteres", mapaPrestamo.get("tasaInteres"));
		nuevoMapaPrestamo.put("mesPrestamo", mapaPrestamo.get("mesPrestamo"));
		nuevoMapaPrestamo.put("noQuincena", mapaPrestamo.get("noQuincena"));
		nuevoMapaPrestamo.put("totalInteres", mapaPrestamo.get("totalInteres"));
		nuevoMapaPrestamo.put("amortizaciones", mapaPrestamo.get("amortizaciones"));
		nuevoMapaPrestamo.put("totalAPagar", mapaPrestamo.get("totalAPagar"));
		return nuevoMapaPrestamo;
	}
	
	public List clonarListaAmortizaciones(List<Map<String, Object>> listaAmortizaciones){
		List nuevaListaAmortizacion = new ArrayList<Map<String,Object>>();
		Map nuevoMapaAmortizacion= null;
		for(Map mapaAmortizacion: listaAmortizaciones){
			nuevoMapaAmortizacion = new HashMap<String, Object>();
			nuevoMapaAmortizacion.put("quincena", mapaAmortizacion.get("quincena") );
			nuevoMapaAmortizacion.put("fecha",  mapaAmortizacion.get("fecha") );
			nuevoMapaAmortizacion.put("capital", mapaAmortizacion.get("capital") );
			nuevoMapaAmortizacion.put("interes", mapaAmortizacion.get("interes") );
			nuevoMapaAmortizacion.put("amortizacion", mapaAmortizacion.get("amortizacion") );
			nuevaListaAmortizacion.add(nuevoMapaAmortizacion);
		}
		return nuevaListaAmortizacion;
	}
	
	public void mostrarPrestamo(ActionEvent evento) throws ParseException{
		if(evento.getComponent().getId().compareTo("btn-toolbar2-primeros") == 0){
			indicePrestamoSeleccionado = 0;
			prestamoSeleccionado = (Map)listaPrestamos.get( indicePrestamoSeleccionado );
			datosPrestamo = clonarPrestamo( prestamoSeleccionado );	
			
		} else if(evento.getComponent().getId().compareTo("btn-toolbar2-anterior") == 0){
			indicePrestamoSeleccionado = indicePrestamoSeleccionado - 1;
			prestamoSeleccionado = (Map)listaPrestamos.get( indicePrestamoSeleccionado );
			datosPrestamo = clonarPrestamo( prestamoSeleccionado );	
		} else if(evento.getComponent().getId().compareTo("btn-toolbar2-siguiente") == 0){
			indicePrestamoSeleccionado = indicePrestamoSeleccionado + 1;
			prestamoSeleccionado = (Map)listaPrestamos.get( indicePrestamoSeleccionado );
			datosPrestamo = clonarPrestamo( prestamoSeleccionado );	
		} else if(evento.getComponent().getId().compareTo("btn-toolbar2-ultimos") == 0){
			indicePrestamoSeleccionado = listaPrestamos.size() - 1 ;
			prestamoSeleccionado = (Map)listaPrestamos.get( indicePrestamoSeleccionado );
			datosPrestamo = clonarPrestamo( prestamoSeleccionado );	
		}
		listaAmortizaciones =  clonarListaAmortizaciones( (List)datosPrestamo.get("listaAmortizaciones") );		
		totalesAmortizacion =  calcularTotalAmortizaciones(listaAmortizaciones);
		configurarAvanzeEntrePolizas();
	}
	
	public void configurarAvanzeEntrePolizas(){
		Integer indiceInicial = 0;
		Integer indiceFinal = listaPrestamos.size() - 1;
		Integer indiceActual = indicePrestamoSeleccionado;
		
		deshabilitarPrimerRegistro = indiceActual == indiceInicial;
		deshabilitarAnteriorRegistro = indiceActual == indiceInicial;
		deshabilitarSiguienteRegistro = indiceActual == indiceFinal;
		deshabilitarUltimoRegistro = indiceActual == indiceFinal;
	}
	
	public Double[] calcularTotalAmortizaciones(List<Map<String, Object>> listaAmortizaciones){
		Double[] totales = new Double[3];
		totales[0] = 0.0;
		totales[1] = 0.0;
		totales[2] = 0.0;
		for(Map amortizacion: listaAmortizaciones){
			totales[0] = totales[0] + Double.valueOf(amortizacion.get("capital").toString());
			totales[1] = totales[1] + Double.valueOf( amortizacion.get("interes").toString() ) ;
			totales[2] = totales[2] + Double.valueOf( amortizacion.get("amortizacion").toString() ) ;			
		}
		return totales;
	}
	
	public void nuevoPrestamo(ActionEvent evento){
		pestaniaSeleccionada = 1;
		etiquetaGuardar = "Guardar";
		etiquetaCancelar = "Cancelar";
		mostrarOpcionesImpresion = false;
		soloLecturaDetalleDatosPrestamo = false;
		deshabilitarGuardar = false;
		datosPrestamo = new HashMap<String, String>();
		datosPrestamo.put("idPoliza", 2000);
		datosPrestamo.put("fechaInicial", new Date() );
		datosPrestamo.put("fechaVencimiento", new Date() );
		datosPrestamo.put("idSocio",25);
		datosPrestamo.put("idAval",25);
		datosPrestamo.put("importe",0);
		datosPrestamo.put("cheque",null);
		datosPrestamo.put("listaAmortizaciones", new ArrayList());
		totalesAmortizacion = new Double[3];
		
	}
	
	public void modificarPrestamo(ActionEvent evento) throws ParseException{
		if(prestamoSeleccionado == null){
			FacesContext.getCurrentInstance().addMessage("m1p2_mensajes", new FacesMessage(FacesMessage.SEVERITY_WARN,"Informacion: ",
					"Seleccione una poliza antes de continuar. " ));
			FacesContext.getCurrentInstance().validationFailed();
		}else{
			pestaniaSeleccionada = 1;
			etiquetaGuardar = "Modificar";
			etiquetaCancelar = "Cancelar";
			mostrarOpcionesImpresion = true;
			deshabilitarGuardar = false;
			soloLecturaDetalleDatosPrestamo = false;
			datosPrestamo = clonarPrestamo(prestamoSeleccionado);
			listaAmortizaciones =  clonarListaAmortizaciones( (List)datosPrestamo.get("listaAmortizaciones") );
			indicePrestamoSeleccionado = listaPrestamos.indexOf(prestamoSeleccionado);
			totalesAmortizacion = calcularTotalAmortizaciones(listaAmortizaciones);
		}
	}
	
	public void eliminarPrestamo(ActionEvent evento) throws ParseException{
		if(prestamoSeleccionado == null){
			FacesContext.getCurrentInstance().addMessage("m1p2_mensajes", new FacesMessage(FacesMessage.SEVERITY_WARN,"Informacion: ",
					"Seleccione una poliza antes de continuar. " ));
			FacesContext.getCurrentInstance().validationFailed();
		}else{
			pestaniaSeleccionada = 1;
			etiquetaGuardar = "Eliminar";
			etiquetaCancelar= "Cancelar";
			mostrarOpcionesImpresion = false;
			deshabilitarGuardar = false;
			soloLecturaDetalleDatosPrestamo = true;
			datosPrestamo = clonarPrestamo(prestamoSeleccionado);
			listaAmortizaciones =  clonarListaAmortizaciones( (List)datosPrestamo.get("listaAmortizaciones") );
			indicePrestamoSeleccionado = listaPrestamos.indexOf(prestamoSeleccionado);
			totalesAmortizacion = calcularTotalAmortizaciones(listaAmortizaciones);
		}
	}
	
	public void validarDatos(ActionEvent evento){
		System.out.println("Datos Poliza: "+datosPrestamo);		
        if(datosPrestamo.get("idPoliza" ) == null || datosPrestamo.get("idPoliza" ).toString().trim().isEmpty() ){
        	FacesContext.getCurrentInstance().addMessage("m1p2_mensajes", new FacesMessage(FacesMessage.SEVERITY_WARN,"Advertencia: ",
    				"El Numero de prestamo es Obligatorio. " ));
        	RequestContext.getCurrentInstance().execute(" window.scrollTo(0, 100); ");
		}else if (datosPrestamo.get("fechaInicial") == null ){
			FacesContext.getCurrentInstance().addMessage("m1p2_mensajes", new FacesMessage(FacesMessage.SEVERITY_WARN,"Advertencia: ",
    				"Debe proporcionar la fecha de inicio. " ));
			RequestContext.getCurrentInstance().execute(" window.scrollTo(0, 100); ");
		}else if (datosPrestamo.get("fechaVencimiento" ) == null){
			FacesContext.getCurrentInstance().addMessage("m1p2_mensajes", new FacesMessage(FacesMessage.SEVERITY_WARN,"Advertencia: ",
    				"Debe proporcionar la fecha de vencimiento . " ));
			RequestContext.getCurrentInstance().execute(" window.scrollTo(0, 100); ");
		}else if (datosPrestamo.get("importe") == null || datosPrestamo.get("importe").toString().trim().isEmpty() ){
			FacesContext.getCurrentInstance().addMessage("m1p2_mensajes", new FacesMessage(FacesMessage.SEVERITY_WARN,"Advertencia: ",
    				"Debe proporcionar el importe. " ));
			RequestContext.getCurrentInstance().execute(" window.scrollTo(0, 100); ");
		}else if (datosPrestamo.get("cheque") == null || datosPrestamo.get("cheque").toString().trim().isEmpty() ){
			FacesContext.getCurrentInstance().addMessage("m1p2_mensajes", new FacesMessage(FacesMessage.SEVERITY_WARN,"Advertencia: ",
    				"Debe proporcionar el numero de cheque. " ));
			RequestContext.getCurrentInstance().execute(" window.scrollTo(0, 100); ");
		}else if (datosPrestamo.get("tasaInteres") == null || datosPrestamo.get("tasaInteres").toString().trim().isEmpty()){
			FacesContext.getCurrentInstance().addMessage("m1p2_mensajes", new FacesMessage(FacesMessage.SEVERITY_WARN,"Advertencia: ",
    				"Debe proporcionar la tasa de interes. " ));
			RequestContext.getCurrentInstance().execute(" window.scrollTo(0, 100); ");
		}/*else if (datosPrestamo.get("mesPrestamo") == null || datosPrestamo.get("mesPrestamo").toString().trim().isEmpty() ){
			FacesContext.getCurrentInstance().addMessage("m1p2_mensajes", new FacesMessage(FacesMessage.SEVERITY_WARN,"Advertencia: ",
    				"Debe proporcionar el Numero de Meses a Prestamo. " ));
		}else if (datosPrestamo.get("noQuincena") == null || datosPrestamo.get("noQuincena").toString().trim().isEmpty()){
			FacesContext.getCurrentInstance().addMessage("m1p2_mensajes", new FacesMessage(FacesMessage.SEVERITY_WARN,"Advertencia: ",
    				"Debe proporcionar el Numero de Quincena. " ));
		}else if (datosPrestamo.get("totalInteres") == null || datosPrestamo.get("totalInteres").toString().trim().isEmpty() ){
			FacesContext.getCurrentInstance().addMessage("m1p2_mensajes", new FacesMessage(FacesMessage.SEVERITY_WARN,"Advertencia: ",
	    			"Debe proporcionar el Total de Interes. " ));
		}else if (datosPrestamo.get("amortizaciones") == null || datosPrestamo.get("amortizaciones").toString().trim().isEmpty()){
			FacesContext.getCurrentInstance().addMessage("m1p2_mensajes", new FacesMessage(FacesMessage.SEVERITY_WARN,"Advertencia: ",
	    			"Debe proporcionar las Amortizaciones. " ));
		}else if (datosPrestamo.get("totalAPagar") == null || datosPrestamo.get("totalAPagar").toString().trim().isEmpty()){
			FacesContext.getCurrentInstance().addMessage("m1p2_mensajes", new FacesMessage(FacesMessage.SEVERITY_WARN,"Advertencia: ",
	    			"Debe proporcionar el Total a Pagar. " ));
		}*/else{
	     	RequestContext.getCurrentInstance().execute(" m1p2_wvConfirmarPolizaDlg.show() ");
		}
	}
	
	public void realizarOperacion(ActionEvent evento){
		if(etiquetaGuardar.compareTo("Guardar") == 0){
		   listaPrestamos.add(datosPrestamo);
		}else if(etiquetaGuardar.compareTo("Modificar") == 0){
		   listaPrestamos.remove(prestamoSeleccionado);
		   listaPrestamos.add(indicePrestamoSeleccionado, datosPrestamo);
		}else if(etiquetaGuardar.compareTo("Eliminar") == 0){
		   listaPrestamos.remove(prestamoSeleccionado);
		}
		FacesContext.getCurrentInstance().addMessage("m1p2_mensajes", new FacesMessage(FacesMessage.SEVERITY_INFO,"Informacion: ",
				"Se realizado la operacion de manera exitosa. Para continuar haga click en el boton REGRESAR a RESUMEN" ));
		RequestContext.getCurrentInstance().execute(" window.scrollTo(0, 100); ");
		etiquetaCancelar = "Regresar a Resumen";
		etiquetaPolizasMostradas = "Polizas en esta pagina:".concat(String.valueOf(listaPrestamos.size()));
		etiquetaTotalPolizas = "Total Polizas:".concat(String.valueOf(listaPrestamos.size()));
		deshabilitarGuardar = true;
	}
	
	public void cancelarOperacion(ActionEvent evento){
		pestaniaSeleccionada = 0;	
	}
	
	public void imprimirCheque(ActionEvent evento){
		
	}
	
	public Map getPrestamoSeleccionado() {
		return prestamoSeleccionado;
	}
	public void setPrestamoSeleccionado(Map prestamoSeleccionado) {
		this.prestamoSeleccionado = prestamoSeleccionado;
	}
	public List getListaPrestamos() {
		return listaPrestamos;
	}
	public void setListaPrestamos(List listaPrestamos) {
		this.listaPrestamos = listaPrestamos;
	}
	
	public void llenarDatosPrestamo() throws ParseException{
		Map mapaPoliza = null;
        SimpleDateFormat formatoFecha = new SimpleDateFormat("dd/MM/yyyy");
       
		listaPrestamos = new ArrayList<HashMap<String, Object>>();
		mapaPoliza = new HashMap<String, Object>();
		mapaPoliza.put("idPoliza", 10000);
		mapaPoliza.put("fechaInicial", formatoFecha.parseObject("24/6/2012") );
		mapaPoliza.put("fechaVencimiento", formatoFecha.parseObject("30/6/2012") );
		mapaPoliza.put("idSocio",59);
		mapaPoliza.put("idAval",60);
		mapaPoliza.put("importe",5000);
		mapaPoliza.put("cheque","500-500");
		mapaPoliza.put("tasaInteres",10);
		mapaPoliza.put("mesPrestamo", 5);
		mapaPoliza.put("noQuincena", 10);
		mapaPoliza.put("totalInteres", 100);
		mapaPoliza.put("amortizaciones", 1000);
		mapaPoliza.put("totalAPagar", 1000);
		mapaPoliza.put("listaAmortizaciones", generarAmortizaciones(mapaPoliza));
		listaPrestamos.add(mapaPoliza);
		mapaPoliza = new HashMap<String, String>();
		mapaPoliza.put("idPoliza", 10001);
		mapaPoliza.put("fechaInicial", formatoFecha.parseObject("24/6/2012") );
		mapaPoliza.put("fechaVencimiento", formatoFecha.parseObject("30/6/2012") );
		mapaPoliza.put("idSocio",40);
		mapaPoliza.put("idAval",41);
		mapaPoliza.put("importe",5000);
		mapaPoliza.put("cheque","500-500");
		mapaPoliza.put("tasaInteres",20);
		mapaPoliza.put("mesPrestamo", 15);
		mapaPoliza.put("noQuincena", 20);
		mapaPoliza.put("totalInteres", 200);
		mapaPoliza.put("amortizaciones", 2000);
		mapaPoliza.put("totalAPagar", 2000);
		mapaPoliza.put("listaAmortizaciones", generarAmortizaciones(mapaPoliza));
		listaPrestamos.add(mapaPoliza);
		mapaPoliza = new HashMap<String, String>();
		mapaPoliza.put("idPoliza", 10002);
		mapaPoliza.put("fechaInicial", formatoFecha.parseObject("24/6/2012") );
		mapaPoliza.put("fechaVencimiento", formatoFecha.parseObject("30/6/2012") );
		mapaPoliza.put("idSocio",40);
		mapaPoliza.put("idAval",60);
		mapaPoliza.put("importe",5000);
		mapaPoliza.put("cheque","500-500");
		mapaPoliza.put("tasaInteres",10);
		mapaPoliza.put("mesPrestamo", 5);
		mapaPoliza.put("noQuincena", 30);
		mapaPoliza.put("totalInteres", 300);
		mapaPoliza.put("amortizaciones", 300);
		mapaPoliza.put("totalAPagar", 300);
		mapaPoliza.put("listaAmortizaciones", generarAmortizaciones(mapaPoliza));
		listaPrestamos.add(mapaPoliza);
		mapaPoliza = new HashMap<String, String>();
		mapaPoliza.put("idPoliza", 10003);
		mapaPoliza.put("fechaInicial", formatoFecha.parseObject("24/6/2012") );
		mapaPoliza.put("fechaVencimiento", formatoFecha.parseObject("30/6/2012") );
		mapaPoliza.put("idSocio",41);
		mapaPoliza.put("idAval",59);
		mapaPoliza.put("importe",5000);
		mapaPoliza.put("cheque","500-500");
		mapaPoliza.put("tasaInteres",10);
		mapaPoliza.put("mesPrestamo", 5);
		mapaPoliza.put("noQuincena", 40);
		mapaPoliza.put("totalInteres", 400);
		mapaPoliza.put("amortizaciones", 400);
		mapaPoliza.put("totalAPagar", 400);
		mapaPoliza.put("listaAmortizaciones", generarAmortizaciones(mapaPoliza));
		listaPrestamos.add(mapaPoliza);
		mapaPoliza = new HashMap<String, String>();
		mapaPoliza.put("idPoliza", 10004);
		mapaPoliza.put("fechaInicial", formatoFecha.parseObject("24/6/2012") );
		mapaPoliza.put("fechaVencimiento", formatoFecha.parseObject("30/6/2012") );
		mapaPoliza.put("idSocio",40);
		mapaPoliza.put("idAval",41);
		mapaPoliza.put("importe",5000);
		mapaPoliza.put("cheque","500-500");
		mapaPoliza.put("tasaInteres",10);
		mapaPoliza.put("mesPrestamo", 5);
		mapaPoliza.put("noQuincena", 20);
		mapaPoliza.put("totalInteres", 300);
		mapaPoliza.put("amortizaciones", 4000);
		mapaPoliza.put("totalAPagar", 4000);
		mapaPoliza.put("listaAmortizaciones", generarAmortizaciones(mapaPoliza));
		listaPrestamos.add(mapaPoliza);
		mapaPoliza = new HashMap<String, String>();
		mapaPoliza.put("idPoliza", 10005);
		mapaPoliza.put("fechaInicial", formatoFecha.parseObject("24/6/2012") );
		mapaPoliza.put("fechaVencimiento", formatoFecha.parseObject("30/6/2012") );
		mapaPoliza.put("idSocio",59);
		mapaPoliza.put("idAval",60);
		mapaPoliza.put("importe",5000);
		mapaPoliza.put("cheque","500-500");
		mapaPoliza.put("tasaInteres",10);
		mapaPoliza.put("mesPrestamo", 5);
		mapaPoliza.put("noQuincena", 40);
		mapaPoliza.put("totalInteres", 400);
		mapaPoliza.put("amortizaciones", 400);
		mapaPoliza.put("totalAPagar", 400);
		mapaPoliza.put("listaAmortizaciones", generarAmortizaciones(mapaPoliza));
		listaPrestamos.add(mapaPoliza);
		mapaPoliza = new HashMap<String, String>();
		mapaPoliza.put("idPoliza", 10006);
		mapaPoliza.put("fechaInicial", formatoFecha.parseObject("24/6/2012") );
		mapaPoliza.put("fechaVencimiento", formatoFecha.parseObject("30/6/2012") );
		mapaPoliza.put("idSocio",59);
		mapaPoliza.put("idAval",41);
		mapaPoliza.put("importe",5000);
		mapaPoliza.put("cheque","500-500");
		mapaPoliza.put("tasaInteres", 20);
		mapaPoliza.put("mesPrestamo", 2);
		mapaPoliza.put("noQuincena", 20);
		mapaPoliza.put("totalInteres", 200);
		mapaPoliza.put("amortizaciones", 2000);
		mapaPoliza.put("totalAPagar", 2000);
		mapaPoliza.put("listaAmortizaciones", generarAmortizaciones(mapaPoliza));
		listaPrestamos.add(mapaPoliza);
		mapaPoliza = new HashMap<String, String>();
		mapaPoliza.put("idPoliza", 10007);
		mapaPoliza.put("fechaInicial", formatoFecha.parseObject("24/6/2012") );
		mapaPoliza.put("fechaVencimiento", formatoFecha.parseObject("30/6/2012") );
		mapaPoliza.put("idSocio",60);
		mapaPoliza.put("idAval",40);
		mapaPoliza.put("importe",5000);
		mapaPoliza.put("cheque","500-500");
		mapaPoliza.put("tasaInteres", 30);
		mapaPoliza.put("mesPrestamo", 21);
		mapaPoliza.put("noQuincena", 20);
		mapaPoliza.put("totalInteres", 200);
		mapaPoliza.put("amortizaciones", 2000);
		mapaPoliza.put("totalAPagar", 2000);
		mapaPoliza.put("listaAmortizaciones", generarAmortizaciones(mapaPoliza));
		listaPrestamos.add(mapaPoliza);
		mapaPoliza = new HashMap<String, String>();
		mapaPoliza.put("idPoliza", 10008);
		mapaPoliza.put("fechaInicial", formatoFecha.parseObject("24/6/2012") );
		mapaPoliza.put("fechaVencimiento", formatoFecha.parseObject("30/6/2012") );
		mapaPoliza.put("idSocio",40);
		mapaPoliza.put("idAval",60);
		mapaPoliza.put("importe",5000);
		mapaPoliza.put("cheque","500-500");
		mapaPoliza.put("tasaInteres", 20);
		mapaPoliza.put("mesPrestamo", 15);
		mapaPoliza.put("noQuincena", 20);
		mapaPoliza.put("totalInteres", 200);
		mapaPoliza.put("amortizaciones", 2000);
		mapaPoliza.put("totalAPagar", 2000);
		mapaPoliza.put("listaAmortizaciones", generarAmortizaciones(mapaPoliza));
		listaPrestamos.add(mapaPoliza);
		mapaPoliza = new HashMap<String, String>();
		mapaPoliza.put("idPoliza", 10009);
		mapaPoliza.put("fechaInicial", formatoFecha.parseObject("24/6/2012") );
		mapaPoliza.put("fechaVencimiento", formatoFecha.parseObject("30/6/2012") );
		mapaPoliza.put("idSocio", 59);
		mapaPoliza.put("idAval",41);
		mapaPoliza.put("importe",5000);
		mapaPoliza.put("cheque","500-500");
		mapaPoliza.put("tasaInteres",10);
		mapaPoliza.put("mesPrestamo", 5);
		mapaPoliza.put("noQuincena", 10);
		mapaPoliza.put("totalInteres", 100);
		mapaPoliza.put("amortizaciones", 1000);
		mapaPoliza.put("totalAPagar", 1000);
		mapaPoliza.put("listaAmortizaciones", generarAmortizaciones(mapaPoliza));
		listaPrestamos.add(mapaPoliza);		
	}
	
	public void generarListaSocios(){
		listaSocios = new ArrayList<Map<String,Object>>();
		Map mapaSocio = new HashMap<String, Object>();
		mapaSocio.put("idSocio", 2);
		mapaSocio.put("clave", 2);
		mapaSocio.put("nombreSocio","Abaunza Amador Angela");
		listaSocios.add(mapaSocio);
		mapaSocio = new HashMap<String, Object>();
		mapaSocio.put("idSocio", 37);
		mapaSocio.put("clave", 37);
		mapaSocio.put("nombreSocio","Aguilar MArtinez Delfino");
		listaSocios.add(mapaSocio);
		mapaSocio = new HashMap<String, Object>();		
		mapaSocio.put("idSocio", 40);
		mapaSocio.put("clave", 40);
		mapaSocio.put("nombreSocio","Aguilar Perez Julia");
		listaSocios.add(mapaSocio);
		mapaSocio = new HashMap<String, Object>();
		mapaSocio.put("idSocio", 41);
		mapaSocio.put("clave", 41);
		mapaSocio.put("nombreSocio","Aguilar Romero Ruth");
		listaSocios.add(mapaSocio);
		mapaSocio = new HashMap<String, Object>();
		mapaSocio.put("idSocio", 59);
		mapaSocio.put("clave", 59);
		mapaSocio.put("nombreSocio","Alavez Ojeda Sara E.");
		listaSocios.add(mapaSocio);
		mapaSocio = new HashMap<String, Object>();
		mapaSocio.put("idSocio", 60);
		mapaSocio.put("clave", 60);
		mapaSocio.put("nombreSocio","Alcaraz Lopez Rafael");
		listaSocios.add(mapaSocio);
		mapaSocio = new HashMap<String, Object>();
		mapaSocio.put("idSocio", 66);
		mapaSocio.put("clave", 66);
		mapaSocio.put("nombreSocio","Alonso Del Moral Yolanda");
		listaSocios.add(mapaSocio);
		mapaSocio = new HashMap<String, Object>();
		mapaSocio.put("idSocio", 85);
		mapaSocio.put("clave", 85);
		mapaSocio.put("nombreSocio","Alvarez Reyes Maria Luisa");
		listaSocios.add(mapaSocio);
		mapaSocio = new HashMap<String, Object>();
		mapaSocio.put("idSocio", 89);
		mapaSocio.put("clave", 89);
		mapaSocio.put("nombreSocio","Alvarez Vargas Maria del C.");
		listaSocios.add(mapaSocio);
		mapaSocio = new HashMap<String, Object>();
		mapaSocio.put("idSocio", 98);
		mapaSocio.put("clave", 98);
		mapaSocio.put("nombreSocio","Andrade Mertinez Ruben");
		listaSocios.add(mapaSocio);
		mapaSocio = new HashMap<String, Object>();
		mapaSocio.put("idSocio", 102);
		mapaSocio.put("clave", 102);
		mapaSocio.put("nombreSocio","Aparicio Castellanos Adrina");
		listaSocios.add(mapaSocio);
		mapaSocio = new HashMap<String, Object>();
		mapaSocio.put("idSocio", 104);
		mapaSocio.put("clave", 104);
		mapaSocio.put("nombreSocio","Aparicio Paxtian Jose C.");
		listaSocios.add(mapaSocio);
		mapaSocio = new HashMap<String, Object>();
		mapaSocio.put("idSocio", 105);
		mapaSocio.put("clave", 105);
		mapaSocio.put("nombreSocio","Aparicio Paxtian Lucio");
		listaSocios.add(mapaSocio);
		mapaSocio = new HashMap<String, Object>();
		mapaSocio.put("idSocio", 120);
		mapaSocio.put("clave", 120);
		mapaSocio.put("nombreSocio","Villegas Alfallo Maria Antonia");
		listaSocios.add(mapaSocio);
		mapaSocio = new HashMap<String, Object>();
		mapaSocio.put("idSocio", 124);
		mapaSocio.put("clave", 124);
		mapaSocio.put("nombreSocio","Arenas Cortes Ismael");
		listaSocios.add(mapaSocio);
		mapaSocio = new HashMap<String, Object>();
		mapaSocio.put("idSocio", 126);
		mapaSocio.put("clave", 126);
		mapaSocio.put("nombreSocio","Argaiz Cabrales Nadia");
		listaSocios.add(mapaSocio);
		mapaSocio = new HashMap<String, Object>();
		mapaSocio.put("idSocio", 136);
		mapaSocio.put("clave", 136);
		mapaSocio.put("nombreSocio","Arrieta Santaella Ana Maria");
		listaSocios.add(mapaSocio);
		mapaSocio = new HashMap<String, Object>();
		mapaSocio.put("idSocio", 138);
		mapaSocio.put("clave", 138);
		mapaSocio.put("nombreSocio"," Arroyo Garcia Julia");
		listaSocios.add(mapaSocio);
		mapaSocio = new HashMap<String, Object>();
		mapaSocio.put("idSocio", 142);
		mapaSocio.put("clave", 142);
		mapaSocio.put("nombreSocio","Atilano Medina Maricela");
		listaSocios.add(mapaSocio);
		mapaSocio = new HashMap<String, Object>();
		mapaSocio.put("idSocio", 149);
		mapaSocio.put("clave", 149);
		mapaSocio.put("nombreSocio","Avila Castelan Silvia");
		listaSocios.add(mapaSocio);
		mapaSocio = new HashMap<String, Object>();
		mapaSocio.put("idSocio", 152);
		mapaSocio.put("clave", 152);
		mapaSocio.put("nombreSocio","Avila Delgado Arturo");
		listaSocios.add(mapaSocio);
		mapaSocio = new HashMap<String, Object>();
		mapaSocio.put("idSocio", 161);
		mapaSocio.put("clave", 161);
		mapaSocio.put("nombreSocio","Ayala Ferreyra Maria Francisca");
		listaSocios.add(mapaSocio);
		
	}
	
	public List generarAmortizaciones(Map datosPrestamo) throws ParseException{
		Map mapaPoliza = null;
		List listaCargoAbonoPoliza = new ArrayList<Map<String, Object>>();
		SimpleDateFormat formatoFecha = new SimpleDateFormat("dd/MM/yyyy");
		
		mapaPoliza = new HashMap<String, Object>();
		mapaPoliza.put("quincena", 1 * Integer.valueOf(datosPrestamo.get("idPoliza").toString()) );
		mapaPoliza.put("fecha",  formatoFecha.parseObject("30/1/2012") );
		mapaPoliza.put("capital", 2 * Integer.valueOf(datosPrestamo.get("idPoliza").toString()) );
		mapaPoliza.put("interes", 3 * Integer.valueOf(datosPrestamo.get("idPoliza").toString()) );
		mapaPoliza.put("amortizacion", 4 * Integer.valueOf(datosPrestamo.get("idPoliza").toString()) );
		listaCargoAbonoPoliza.add(mapaPoliza);
		
		mapaPoliza = new HashMap<String, Object>();
		mapaPoliza.put("quincena", 2 * Integer.valueOf(datosPrestamo.get("idPoliza").toString()) );
		mapaPoliza.put("fecha",  formatoFecha.parseObject("30/1/2012") );
		mapaPoliza.put("capital", 3 * Integer.valueOf(datosPrestamo.get("idPoliza").toString()) );
		mapaPoliza.put("interes", 4 * Integer.valueOf(datosPrestamo.get("idPoliza").toString()) );
		mapaPoliza.put("amortizacion", 5 * Integer.valueOf(datosPrestamo.get("idPoliza").toString()) );
		listaCargoAbonoPoliza.add(mapaPoliza);
		
		mapaPoliza = new HashMap<String, Object>();
		mapaPoliza.put("quincena", 3 * Integer.valueOf(datosPrestamo.get("idPoliza").toString()) );
		mapaPoliza.put("fecha",  formatoFecha.parseObject("30/1/2012") );
		mapaPoliza.put("capital", 4 * Integer.valueOf(datosPrestamo.get("idPoliza").toString()) );
		mapaPoliza.put("interes", 5 * Integer.valueOf(datosPrestamo.get("idPoliza").toString()) );
		mapaPoliza.put("amortizacion", 6 * Integer.valueOf(datosPrestamo.get("idPoliza").toString()) );
		listaCargoAbonoPoliza.add(mapaPoliza);
		
		mapaPoliza = new HashMap<String, Object>();
		mapaPoliza.put("quincena", 4 * Integer.valueOf(datosPrestamo.get("idPoliza").toString()) );
		mapaPoliza.put("fecha",  formatoFecha.parseObject("30/1/2012") );
		mapaPoliza.put("capital", 5 * Integer.valueOf(datosPrestamo.get("idPoliza").toString()) );
		mapaPoliza.put("interes", 6 * Integer.valueOf(datosPrestamo.get("idPoliza").toString()) );
		mapaPoliza.put("amortizacion", 7 * Integer.valueOf(datosPrestamo.get("idPoliza").toString()) );
		listaCargoAbonoPoliza.add(mapaPoliza);
		
		mapaPoliza = new HashMap<String, Object>();
		mapaPoliza.put("quincena", 5 * Integer.valueOf(datosPrestamo.get("idPoliza").toString()) );
		mapaPoliza.put("fecha",  formatoFecha.parseObject("30/1/2012") );
		mapaPoliza.put("capital", 6 * Integer.valueOf(datosPrestamo.get("idPoliza").toString()) );
		mapaPoliza.put("interes", 7 * Integer.valueOf(datosPrestamo.get("idPoliza").toString()) );
		mapaPoliza.put("amortizacion", 8 * Integer.valueOf(datosPrestamo.get("idPoliza").toString()) );
		listaCargoAbonoPoliza.add(mapaPoliza);
		
		return listaCargoAbonoPoliza;
	
	}

	public Integer getPestaniaSeleccionada() {
		return pestaniaSeleccionada;
	}

	public void setPestaniaSeleccionada(Integer pestaniaSeleccionada) {
		this.pestaniaSeleccionada = pestaniaSeleccionada;
	}

	public String getLabelIniciar() {
		return labelIniciar;
	}

	public void setLabelIniciar(String labelIniciar) {
		this.labelIniciar = labelIniciar;
	}

	public String getEtiquetaPolizasMostradas() {
		return etiquetaPolizasMostradas;
	}

	public void setEtiquetaPolizasMostradas(String etiquetaPolizasMostradas) {
		this.etiquetaPolizasMostradas = etiquetaPolizasMostradas;
	}

	public String getEtiquetaTotalPolizas() {
		return etiquetaTotalPolizas;
	}

	public void setEtiquetaTotalPolizas(String etiquetaTotalPolizas) {
		this.etiquetaTotalPolizas = etiquetaTotalPolizas;
	}

	public String getEtiquetaGuardar() {
		return etiquetaGuardar;
	}

	public void setEtiquetaGuardar(String etiquetaGuardar) {
		this.etiquetaGuardar = etiquetaGuardar;
	}

	public String getEtiquetaCancelar() {
		return etiquetaCancelar;
	}

	public void setEtiquetaCancelar(String etiquetaCancelar) {
		this.etiquetaCancelar = etiquetaCancelar;
	}

	public Boolean getMostrarOpcionesImpresion() {
		return mostrarOpcionesImpresion;
	}

	public void setMostrarOpcionesImpresion(Boolean mostrarOpcionesImpresion) {
		this.mostrarOpcionesImpresion = mostrarOpcionesImpresion;
	}

	public Boolean getDeshabilitarGuardar() {
		return deshabilitarGuardar;
	}

	public void setDeshabilitarGuardar(Boolean deshabilitarGuardar) {
		this.deshabilitarGuardar = deshabilitarGuardar;
	}

	public List getListaSocios() {
		return listaSocios;
	}

	public void setListaSocios(List listaSocios) {
		this.listaSocios = listaSocios;
	}

	public List getListaAvales() {
		return listaAvales;
	}

	public void setListaAvales(List listaAvales) {
		this.listaAvales = listaAvales;
	}

	public Map getDatosPrestamo() {
		return datosPrestamo;
	}

	public void setDatosPrestamo(Map datosPrestamo) {
		this.datosPrestamo = datosPrestamo;
	}

	public Boolean getSoloLecturaDetalleDatosPrestamo() {
		return soloLecturaDetalleDatosPrestamo;
	}

	public void setSoloLecturaDetalleDatosPrestamo(
			Boolean soloLecturaDetalleDatosPrestamo) {
		this.soloLecturaDetalleDatosPrestamo = soloLecturaDetalleDatosPrestamo;
	}

	public List getListaAmortizaciones() {
		return listaAmortizaciones;
	}

	public void setListaAmortizaciones(List listaAmortizaciones) {
		this.listaAmortizaciones = listaAmortizaciones;
	}

	public Boolean getDeshabilitarPrimerRegistro() {
		return deshabilitarPrimerRegistro;
	}

	public void setDeshabilitarPrimerRegistro(Boolean deshabilitarPrimerRegistro) {
		this.deshabilitarPrimerRegistro = deshabilitarPrimerRegistro;
	}

	public Boolean getDeshabilitarAnteriorRegistro() {
		return deshabilitarAnteriorRegistro;
	}

	public void setDeshabilitarAnteriorRegistro(
			Boolean deshabilitarAnteriorRegistro) {
		this.deshabilitarAnteriorRegistro = deshabilitarAnteriorRegistro;
	}

	public Boolean getDeshabilitarSiguienteRegistro() {
		return deshabilitarSiguienteRegistro;
	}

	public void setDeshabilitarSiguienteRegistro(
			Boolean deshabilitarSiguienteRegistro) {
		this.deshabilitarSiguienteRegistro = deshabilitarSiguienteRegistro;
	}

	public Boolean getDeshabilitarUltimoRegistro() {
		return deshabilitarUltimoRegistro;
	}

	public void setDeshabilitarUltimoRegistro(Boolean deshabilitarUltimoRegistro) {
		this.deshabilitarUltimoRegistro = deshabilitarUltimoRegistro;
	}

	public Integer getIndicePrestamoSeleccionado() {
		return indicePrestamoSeleccionado;
	}

	public void setIndicePrestamoSeleccionado(Integer indicePrestamoSeleccionado) {
		this.indicePrestamoSeleccionado = indicePrestamoSeleccionado;
	}

	public Double[] getTotalesAmortizacion() {
		return totalesAmortizacion;
	}

	public void setTotalesAmortizacion(Double[] totalesAmortizacion) {
		this.totalesAmortizacion = totalesAmortizacion;
	}
}
